home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 2002 November
/
SGI Freeware 2002 November - Disc 2.iso
/
dist
/
fw_glimpse.idb
/
usr
/
freeware
/
src
/
glimpse-3.0
/
libtemplate
/
template
/
netfind2soif.pl.z
/
netfind2soif.pl
Wrap
Perl Script
|
1997-09-09
|
3KB
|
119 lines
: # *-*-perl-*-*
eval 'exec perl -S $0 "$@"'
if $running_under_some_shell;
#
# netfind2soif.pl - Converts the Netfind seed database into a SOIF stream.
# Groups the SOIF templates by second-level domains.
#
# Darren Hardy, hardy@cs.colorado.edu, January 1995
#
# $Id: netfind2soif.pl,v 1.7 1995/01/17 23:07:33 hardy Exp $
#
# The netfind seed database has records that look like this:
#
# %D domain-name
# %O organization-name
# %H hostnames
#
# Generates SOIF that looks like this:
#
# @DOMAIN { nop:domain-name
# Embed<x>-Domain{x}: foo.domain-name
# Embed<x>-Organization{x}: organization-name
# Embed<x>-Hosts{x}: hosts
# Embed<y>-Domain{x}: bar.domain-name
# Embed<y>-Organization{x}: organization-name
# Embed<y>-Hosts{x}: hosts
# }
# or
# @DOMAIN { nop:domain-name
# Domain{x}: domain-name
# Organization{x}: organization-name
# Hosts{x}: hosts
# }
#
$ENV{'HARVEST_HOME'} = "/usr/local/harvest" if (!defined($ENV{'HARVEST_HOME'}));
unshift(@INC, "$ENV{'HARVEST_HOME'}/lib"); # use local files
$ENV{'TMPDIR'} = "/tmp" if (!defined($ENV{'TMPDIR'}));
require 'soif.pl';
$sld_file = "$ENV{'TMPDIR'}/nfdomains.$$";
$slo_file = "$ENV{'TMPDIR'}/nforgs.$$";
$slh_file = "$ENV{'TMPDIR'}/nfhosts.$$";
&do_reset();
while (<>) {
chop;
$d = $1, next if (/^%D\s*(.*)$/io);
$o = $1, next if (/^%O\s*(.*)$/io);
$h = $1, next if (/^%H\s*(.*)$/io);
if (defined($d) && defined($o) && defined($h)) {
if ($d =~ /^(\d+)\.(\d+)\.(\d+)$/o) {
$sld = "$1.$2";
} elsif ($d =~ /^([+\-\w]+\.[+\-\w]+)$/o) {
$sld = $1;
} elsif ($d =~ /^.*\.([+\-\w]+\.[+\-\w]+)$/o) {
$sld = $1;
} else {
next;
}
$sl_domain{$sld} .= "$d\n";
if ($o eq "") {
$sl_org{$sld} .= "unspecified\n";
} else {
$sl_org{$sld} .= "$o\n";
}
if ($h eq "") {
$sl_host{$sld} .= "unspecified\n";
} else {
$sl_host{$sld} .= "$h\n";
}
&do_reset();
}
}
while (($key, $value) = each %sl_domain) {
@domains = split(/\n/, $sl_domain{$key});
@orgs = split(/\n/, $sl_org{$key});
@hosts = split(/\n/, $sl_host{$key});
undef %record;
delete $sl_domain{$key};
delete $sl_org{$key};
delete $sl_host{$key};
if ($#domains < 0 || $#orgs < 0 || $#hosts < 0) {
print STDERR "Empty Record!\n";
next;
}
$n = $#domains + 1;
if ($n == 1) {
$record{"Domain"} = $domains[0];
$record{"Organization"} = $orgs[0]
if ($orgs[0] ne "unspecified");
$record{"Hosts"} = $hosts[0]
if ($hosts[0] ne "unspecified");
} else {
for ($i = 1; $i <= $n; $i++) {
$record{"Embed<$i>-Domain"} = $domains[$i-1];
$record{"Embed<$i>-Organization"} = $orgs[$i-1]
if ($orgs[$i-1] ne "unspecified");
$record{"Embed<$i>-Hosts"} = $hosts[$i-1]
if ($hosts[$i-1] ne "unspecified");
}
}
&soif'print("DOMAIN", "nop:$key", %record);
}
exit(0);
sub do_reset {
undef $d;
undef $o;
undef $h;
undef $sld;
}